name: Release

on:
  push:
    tags:
      - "v*.*.*"

permissions:
  contents: read

jobs:
  release:
    permissions:
      contents: write  # for softprops/action-gh-release to create GitHub release
    runs-on: ubuntu-latest
    environment: release
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Install ldid
        run: |
          sudo apt-get update
          sudo apt-get install git build-essential libplist-dev libssl-dev openssl qemu-user-binfmt
          cd /tmp
          git clone https://gitlab.com/opensource-saurik/ldid.git
          cd ldid
          git submodule update --init
          gcc -I. -c -o lookup2.o lookup2.c
          g++ -std=c++11 -o ldid lookup2.o ldid.cpp -I. -lcrypto -lplist -lxml2
          sudo mv ldid /usr/local/bin
      - name: Install pnpm
        uses: pnpm/action-setup@v3.0.0
        with:
          version: next-9
          standalone: true
      - name: pnpm install
        # We use --force because we want all artifacts of @reflink/reflink to be installed.
        run: pnpm install --force
      - name: Publish Packages
        continue-on-error: true
        env:
          # setting the "npm_config_//registry.npmjs.org/:_authToken" env variable directly doesn't work.
          # probably "pnpm release" doesn't pass auth tokens to child processes
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: |
          npm config set "//registry.npmjs.org/:_authToken" "${NPM_TOKEN}" # pnpm config set is broken
          pnpm release
      - name: Copy Artifacts
        run: pnpm run copy-artifacts
      - name: Generate release description
        run: pnpm run make-release-description
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          draft: true
          files: dist/*
          body_path: RELEASE.md
